package com.heima.test8;

import java.util.concurrent.*;

public class Demo02 {
    public static void main(String[] args) {
        //1 创建线程池对象
        ThreadPoolExecutor pool = new ThreadPoolExecutor(2, // 核心线程和数量
                5,//  全部的线程最大值
                0, TimeUnit.SECONDS, //空闲线程的存活时间和单位
                // new ArrayBlockingQueue<>(3),// 任务的队列
                new LinkedBlockingQueue<>(),
                Executors.defaultThreadFactory(),//创建线程工厂
                new ThreadPoolExecutor.AbortPolicy() //任务的拒绝策略
        );
        //执行流程
        // 1首先先开启核心线程去运行任务
        // 2当核心线程满的时候, 多的任务会直接放到队列里
        // 3 当队列也满的时候, 再多出的任务 会创建临时线程去执行
        // 4 当  线程总数量+队列的总数量  都满了,那么多余的任务就会被拒绝

        //2 执行任务 参数接收一个Runnable对象
        for (int i = 1; i <= 8; i++) {
            pool.execute(new MyRunnable(i));
        }
        pool.execute(new MyRunnable(9));

        //3 shutdown 可以让线程池在执行完任务后 结束
        pool.shutdown();

        System.out.println("111111111111111");

    }
}